Client-server networks have become a normal mode of operation for computers linked by local area networks communicating via Ethernet or similar closely-tied protocols, as well as more dispersed systems communicating over the Internet or proprietary wide-area groupings. A single organization may be faced with a task of administering a dispersed group of networks, communicating within some groups on local systems, linked with other groups and individual machines via loosely-linked systems such as the Internet. Putting to one side the dilemmas associated with security, data integrity and the like facing such systems, administrators face challenges in maintaining the commonality and uniformity of such systems. The seemingly simple issue of ensuring that mission-critical software systems are upgraded to the latest release levels can pose significant challenges.
On such systems, a first step in system administration is providing client machines in an operating system environment (OSE). One method for accomplishing that task is by deploying the OSE to the client machine itself, depending on processor type and add-on hardware installed on the client machine. Where the client machine is a thin client, deployed as part of a desktop virtualization solution, the OSE is provided by establishing a connection to a Virtual Machine (VM) hosting the OSE. The VM is typically installed on a server, a server in a client-server environment performs most or all of the application processing with little or none performed in the client, employing virtualization technologies like VMware, Xen, KVM etc, and is typically a counterpart to a thin client. The thin client provides the user with hardware such as a display, a keyboard and a mouse interface, driven by the specific OSE supplied by the server. The thin client may be a normal personal computer, specialized hardware, a hand-held device, or any device which is used in the manner described above.
In homogenous information technology (IT) environments (that is, IT environments where a large number of client machines have similar Central Processing Unit (CPU) architecture and add-on hardware), deployment of OSE can be completely automated by use of commonly known installation procedures such as Pre-boot Execution Environment (PXE), Bootstrap Protocol (BOOTP), Dynamic Host Configuration Protocol (DHCP), cloning, etc. In heterogeneous environments, however, the amount of automation that can be achieved is limited. Deployment of OSE in such heterogeneous IT environments requires significantly longer time, and may also be more prone to errors. Further, in a desktop virtualization environment, the client machine is a thin client, the user is generally not provided with any flexibility of choosing an OSE. The thin client connects to a particular OSE (hosted by a VM), which is either known to the user in advance or decided dynamically by a connection broker. The connection broker makes such decisions, based on factors such as the user's group or department, system load balancing and company policy. There are many scenarios where a thin-client user might need flexibility in choosing an OSE. For example, on a particular day and time, a thin-client user may want to do some software development work, and hence may need an OSE supporting relevant development tools. Likewise, on a different day and time, the thin-client user might want to browse the Internet, and hence may need an OSE that supports Internet browsing. Further, the thin-client might be equipped with special hardware like joystick, touch pad etc. and the user might be interested in testing a gaming software and hence may need an OSE that supports the add-on hardware. In some scenarios, all tools are packed into a single OSE to make it generic and applicable to all types of thin-client hardware. This solution leads to unnecessarily bloating the OSE, thereby increasing resource usage on the server hosting the OSE, and eventually becoming a performance hot-spot for efficient running of the thin-client environment.